// pages/home/home.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    show: false, // 取餐员多商品
    isOpen: false, //  柜子状态（false：关；true：开）
    webpageContent: '', //  二维码内容
    cabinetMsg: '', //  柜子信息
    cabinetResult: '', // 表名
    inputValue: '', // 用于存储输入框的值
    identity: 'pickup', //身份
    cabinetId: 0 //取餐员查到的柜号
  },

  // 展示弹出层（多商品）
  showPopup() {
    this.setData({
      show: true
    });
  },
  // 关闭弹出层
  onClose() {
    this.setData({
      show: false
    });
  },

  // 输入事件处理函数
  handleInput: function (e) {
    const value = e.detail.value;
    this.setData({
      inputValue: value,
    });
  },

  // 跳转至初始界面
  toPrepage() {
    wx.redirectTo({
      url: '/pages/prepage/prepage',
    })
  },

  // 处理柜名(表名)
  changeCabinetName() {
    const parts = this.data.cabinetMsg.split('，');

    // 提取 xx村xx坡xxx号 中的 xx
    const addressPart = parts[0]; // xx村xx坡xxx号
    //const villageNumber = addressPart.match(/^(\d+|[^村]+)(?=村)/)[0]; // 提取 xx
    const villageNumber = addressPart.match(/^(\d+|[^学校]+)(?=学校)/)[0];

    // 提取 01号柜 中的 01
    const cabinetPart = parts[1]; // 01号柜
    const cabinetNumber = cabinetPart.match(/\d+/)[0]; // 提取 01

    // 拼接
    const result = villageNumber + cabinetNumber;
    console.log(result);

    this.setData({
      cabinetResult: result
    })
  },

  // 取餐员操作
  // 先检验是否为四位正确数字，再发送查询商品信息
  checkCabinet() {
    const _this = this;
    const inputValue = _this.data.inputValue;
    _this.changeCabinetName();

    // 检查输入值是否为四位数字
    if (/^\d{4}$/.test(inputValue)) {
      console.log('输入正确，正在查询...');
      //发送请求(先查询有多少商品)
      wx.request({
        url: 'http://localhost:8080/cabinets/check',
        method: 'POST',
        data: {
          cabinetName: _this.data.cabinetResult,
          phoneNumber: inputValue
        },
        success(res) {
          _this.setData({
            cabinetId: res.data.data
          }, () => {
            // 在 setData 完成后的回调函数中进行判断
            if (!_this.data.cabinetId || _this.data.cabinetId.length === 0) {
              wx.showToast({
                title: '未找到对应商品',
                icon: 'none',
                duration: 2000,
              });
            } else {
              // 如果有商品，可以在这里继续处理
              console.log('找到商品:', _this.data.cabinetId);
              // 展示多按钮
              _this.showPopup();
            }
          })
        }
      });
    } else {
      console.log('输入错误，请输入四位数字');
      wx.showToast({
        title: '请输入四位数字',
        icon: 'error',
        duration: 2000,
      });
    }
  },

  // 取餐员打开对应柜子
  openCabinet(e) {
    const _this = this;
    const openCabinetById = e.currentTarget.dataset.id;

    this.setData({
      cabinetId: openCabinetById
    })

    // 请求开柜
    wx.request({
      url: 'http://localhost:8080/cabinets/open',
      method: 'POST',
      data: {
        cabinetId: openCabinetById,
        phoneNumber: _this.data.inputValue,
        cabinetName: _this.data.cabinetResult
      },
      success(res) {
        if (res.data.code === 200) {
          // 开柜以及关闭弹出层
          _this.setData({
              isOpen: !_this.data.isOpen
            }),
            _this.onClose();

          // 提示信息
          wx.showToast({
            title: `${openCabinetById}号柜打开成功`,
            icon: 'success',
            duration: 2000
          })
        } else {
          // 如果失败，显示错误信息
          wx.showToast({
            title: res.data.message || '开柜失败，请重试',
            icon: 'none',
            duration: 2000
          });
        }

      },
      fail(err) {
        console.error('请求失败:', err);
        // 显示错误信息
        wx.showToast({
          title: '网络请求失败，请检查网络连接',
          icon: 'none',
          duration: 2000
        });
      }
    })
  },

  // 取餐员关柜
  closeCabinet() {
    const _this = this;
    const inputValue = _this.data.inputValue;

    // 检查输入值是否为四位数字
    if (/^\d{4}$/.test(inputValue)) {
      console.log('输入正确，正在关柜...');
      //发送请求(未完成)
      wx.request({
        url: 'http://localhost:8080/cabinets/close',
        method: 'POST',
        data: {
          cabinetName: _this.data.cabinetResult,
          cabinetId: _this.data.cabinetId,
          phoneNumber: _this.data.inputValue
        },
        success(res) {
          if (res.data.code === 200) {

            wx.showToast({
              title: `${_this.data.cabinetId}号柜关闭成功`,
              icon: 'success',
              duration: 2000,
            });

            // 关柜
            _this.setData({
              isOpen: !_this.data.isOpen,
              inputValue: '',
              cabinetId: 0
            });
          } else {

          }
        },
        fail(err) {
          console.error('请求失败:', err);
          // 显示错误信息
          wx.showToast({
            title: '网络请求失败，请检查网络连接',
            icon: 'none',
            duration: 2000
          });
        }
      })
    } else {
      console.log('输入错误，请输入四位数字');
      wx.showToast({
        title: '请输入四位数字',
        icon: 'none',
        duration: 2000,
      });
    }
  },

  // 送餐员操作
  // 开柜
  diliverymanOpenCabinet() {
    const _this = this;
    _this.changeCabinetName();

    const inputValue = _this.data.inputValue;
    const cabinetName = _this.data.cabinetResult;

    // 检查输入值是否为11位数字
    if (/^\d{11}$/.test(inputValue)) {
      console.log('输入正确，正在开柜...');
      //发送请求(未完成)
      wx.request({
        url: 'http://localhost:8080/cabinets/open',
        method: 'POST',
        data: {
          cabinetName: cabinetName,
          phoneNumber: inputValue,
          cabinetId: _this.data.cabinetId
        }
      })

      // 开柜
      _this.setData({
        isOpen: !_this.data.isOpen,
      });

      wx.showToast({
        title: '开柜成功',
        icon: 'success',
        duration: 2000,
      });
    } else {
      console.log('输入错误，请输入11位数字');
      wx.showToast({
        title: '请输入11位数字',
        icon: 'none',
        duration: 2000,
      });
    }
  },
  // 关柜
  diliverymanCloseCabinet() {
    const _this = this;
    const inputValue = _this.data.inputValue;

    // 检查输入值是否为11位数字
    if (/^\d{11}$/.test(inputValue)) {
      console.log('输入正确，正在关柜...');
      //发送请求(未完成)
      wx.request({
        url: 'http://localhost:8080/cabinets/close',
        method: "POST",
        data: {
          cabinetName: _this.data.cabinetResult,
          phoneNumber: inputValue,
          cabinetId:_this.data.cabinetId
        },
        success(res) {
          if (res.data.code === 200) {
            // 关柜
            _this.setData({
              isOpen: !_this.data.isOpen,
              inputValue: ''
            });

            wx.showToast({
              title: '关柜成功',
              icon: 'success',
              duration: 2000,
            });
          }
        },
        fail(err) {
          console.error('请求失败:', err);
          // 显示错误信息
          wx.showToast({
            title: '网络请求失败，请检查网络连接',
            icon: 'none',
            duration: 2000
          });
        }
      })
    } else {
      console.log('输入错误，请输入11位数字');
      wx.showToast({
        title: '请输入11位数字',
        icon: 'none',
        duration: 2000,
      });
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 从本地存储中读取数据
    const webpageContent = wx.getStorageSync('webpageContent');
    if (webpageContent) {
      this.setData({
        webpageContent: webpageContent,
      });

      // 数据处理
      const parts = webpageContent.split('，');
      if (parts.length >= 3) {
        const cabinetMsg = parts[1] + '，' + parts[2];
        this.setData({
          cabinetMsg: cabinetMsg
        })
        console.log('提取的柜子信息:', cabinetMsg);
      } else {
        console.log('网页内容格式不符合预期');
      }
    } else {
      console.log('未找到网页内容');
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 从本地存储中读取数据
    const webpageContent = wx.getStorageSync('webpageContent');
    // 获取用户身份信息
    const identity = wx.getStorageSync('identity')
    if (webpageContent) {
      this.setData({
        webpageContent: webpageContent,
        identity: identity
      });

      // 数据处理
      const parts = webpageContent.split('，');
      if (parts.length >= 3) {
        const cabinetMsg = parts[1] + '，' + parts[2];
        this.setData({
          cabinetMsg: cabinetMsg
        })
        console.log('提取的柜子信息:', cabinetMsg);
      } else {
        console.log('网页内容格式不符合预期');
      }
    } else {
      console.log('未找到网页内容');
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})